/*
 * Copyright 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package biznussoft.metercor;

import android.app.SearchManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import biznussoft.metercor.fragments.AccountDetailsFragment;
import biznussoft.metercor.fragments.ContactsFragment;
import biznussoft.metercor.fragments.NewStockTransferFragment;
import biznussoft.metercor.fragments.StockTransferDetailsFragment;
import biznussoft.metercor.fragments.StockTransferFragment;
import biznussoft.metercor.listener.Globallistener;

import com.salesforce.androidsdk.app.SalesforceSDKManager;

/**
 * This example illustrates a common usage of the DrawerLayout widget
 * in the Android support library.
 * <p/>
 * <p>When a navigation (left) drawer is present, the host activity should detect presses of
 * the action bar's Up affordance as a signal to open and close the navigation drawer. The
 * ActionBarDrawerToggle facilitates this behavior.
 * Items within the drawer should fall into one of two categories:</p>
 * <p/>
 * <ul>
 * <li><strong>View switches</strong>. A view switch follows the same basic policies as
 * list or tab navigation in that a view switch does not create navigation history.
 * This pattern should only be used at the root activity of a task, leaving some form
 * of Up navigation active for activities further down the navigation hierarchy.</li>
 * <li><strong>Selective Up</strong>. The drawer allows the user to choose an alternate
 * parent for Up navigation. This allows a user to jump across an app's navigation
 * hierarchy at will. The application should treat this as it treats Up navigation from
 * a different task, replacing the current task stack using TaskStackBuilder or similar.
 * This is the only form of navigation drawer that should be used outside of the root
 * activity of a task.</li>
 * </ul>
 * <p/>
 * <p>Right side drawers should be used for actions, not navigation. This follows the pattern
 * established by the Action Bar that navigation should be to the left and actions to the right.
 * An action should be an operation performed on the current contents of the window,
 * for example enabling or disabling a data overlay on top of the current content.</p>
 */
public class StockTransferActivity extends FragmentActivity implements OnItemClickListener,Globallistener {
	private DrawerLayout mDrawerLayout;
	private ListView mDrawerList;
	private ActionBarDrawerToggle mDrawerToggle;
	private CharSequence mDrawerTitle;
	private CharSequence mTitle;
	private String[] mPlanetTitles;
	private LinearLayout layout;
	private FrameLayout frameLayout;
	private int images[]={R.drawable.account_button,R.drawable.service_order_button,R.drawable.stock_transfer_collapse_button,R.drawable.logout_button};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_stock_transfer);
		layout = (LinearLayout) findViewById(R.id.layout);
		frameLayout = (FrameLayout) findViewById(R.id.stockedit);

		StockTransferFragment newFragment1 = new StockTransferFragment();
		FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
		transaction1.replace(R.id.fragment1, newFragment1);
		transaction1.commit();
		new Handler().postDelayed(new Runnable() {
			@Override
			public void run() {
				StockTransferFragment  contactFragment = (StockTransferFragment) getSupportFragmentManager().findFragmentById(R.id.fragment1);       
				contactFragment.retriveLeads();
			}
		}, 1000);

		mTitle = mDrawerTitle = getTitle();
		mPlanetTitles = getResources().getStringArray(R.array.planets_array);
		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
		mDrawerList = (ListView) findViewById(R.id.left_drawer);
		mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
		DisplayAdapter adapter = new DisplayAdapter(images);
		mDrawerList.setAdapter(adapter);   
		mDrawerList.setOnItemClickListener(this);
		
		

		// set up the drawer's list view with items and click listener
		/* mDrawerList.setAdapter(new ArrayAdapter<String>(this,
                R.layout.drawer_list_item, mPlanetTitles));
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());*/

		// enable ActionBar app icon to behave as action to toggle nav drawer
		getActionBar().setDisplayHomeAsUpEnabled(true);
		getActionBar().setHomeButtonEnabled(true);
		getActionBar().setIcon(R.drawable.inventory_top_collpse);

		// ActionBarDrawerToggle ties together the the proper interactions
		// between the sliding drawer and the action bar app icon
		mDrawerToggle = new ActionBarDrawerToggle(
				this,                  /* host Activity */
				mDrawerLayout,         /* DrawerLayout object */
				R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
				R.string.drawer_open,  /* "open drawer" description for accessibility */
				R.string.drawer_close  /* "close drawer" description for accessibility */
				) {
			public void onDrawerClosed(View view) {
				getActionBar().setTitle("Stock Transfer");
				invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
			}

			public void onDrawerOpened(View drawerView) {
				getActionBar().setTitle("Stock Transfer");
				invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
			}
		};
		mDrawerLayout.setDrawerListener(mDrawerToggle);

		
		
		
		

	}



	/* Called whenever we call invalidateOptionsMenu() 
	@Override
	public boolean onPrepareOptionsMenu(Menu menu) {
		// If the nav drawer is open, hide action items related to the content view
		boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
		//menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
		return super.onPrepareOptionsMenu(menu);
	}*/

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// The action bar home/up action should open or close the drawer.
		// ActionBarDrawerToggle will take care of this.
		if (mDrawerToggle.onOptionsItemSelected(item)) {
			return true;
		}
		// Handle action buttons
		switch(item.getItemId()) {
		case R.id.action_websearch:
			// create intent to perform web search for this planet
			Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
			intent.putExtra(SearchManager.QUERY, getActionBar().getTitle());
			// catch event that there's no activity to handle intent
			if (intent.resolveActivity(getPackageManager()) != null) {
				startActivity(intent);
			} else {
				Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show();
			}
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}

	/* The click listner for ListView in the navigation drawer */
	private class DrawerItemClickListener implements ListView.OnItemClickListener {
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
			selectItem(position);
		}
	}

	private void selectItem(int position) {
		// update the main content by replacing fragments
		/*  Fragment fragment = new PlanetFragment();
        Bundle args = new Bundle();
        args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
        fragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        setTitle(mPlanetTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);*/



	}

	@Override
	public void setTitle(CharSequence title) {
		mTitle = title;                
		getActionBar().setTitle(mTitle);
	}

	/**
	 * When using the ActionBarDrawerToggle, you must call it during
	 * onPostCreate() and onConfigurationChanged()...
	 */

	@Override
	protected void onPostCreate(Bundle savedInstanceState) {
		super.onPostCreate(savedInstanceState);
		// Sync the toggle state after onRestoreInstanceState has occurred.
		mDrawerToggle.syncState();
	}

	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
		// Pass any configuration change to the drawer toggls
		mDrawerToggle.onConfigurationChanged(newConfig);
	}

	/**
	 * Fragment that appears in the "content_frame", shows a planet
	 */
	/*    public static class PlanetFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";

        public PlanetFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.planets_array)[i];

            int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                            "drawable", getActivity().getPackageName());
            ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
            getActivity().setTitle(planet);
            return rootView;
        }
    }*/




	class DisplayAdapter extends BaseAdapter{
		ImageView image;
		int [] imagesList ;
		public DisplayAdapter(int[] images) {
			// TODO Auto-generated constructor stub
			imagesList = images;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return images.length;
		}

		@Override
		public Object getItem(int arg0) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public long getItemId(int arg0) {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public View getView(int position, View v, ViewGroup arg2) {

			if(v== null){
				LayoutInflater inflater = getLayoutInflater();
				v   = inflater.inflate(R.layout.images_list, null);

				image = (ImageView) v.findViewById(R.id.image);
			}

			image.setImageResource(imagesList[position]);

			return v;
		}

	}

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
		// TODO Auto-generated method stub
		if(position == 0){

			startActivity(new Intent(this,AccountsActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));           

		}
		if(position == 2){

			startActivity(new Intent(this,StockTransferActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

		}
		if(position == 1){

			startActivity(new Intent(this,ServiceOrderActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
		}
		if(position == 3){             

			SalesforceSDKManager.getInstance().logout(this);
		}


	}

	@Override
	public void getResponse(final int position) {

		StockTransferDetailsFragment newFragment1 = new StockTransferDetailsFragment();
		FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
		transaction1.replace(R.id.stock, newFragment1);
		transaction1.commit();
		new Handler().postDelayed(new Runnable() {
			@Override
			public void run() {
				StockTransferDetailsFragment  contactFragment = (StockTransferDetailsFragment) getSupportFragmentManager().findFragmentById(R.id.stock);       
				contactFragment.displayEmployeeDetails(position);
			}
		}, 1000);


	}

	@Override
	public void getActivityResponse(int position) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onCategoryClicked(int position) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onNewContact(String[] args) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onGetContacts(int position, String category) {
		// TODO Auto-generated method stub



	}

	@Override
	public void getSignature(String base64) {
		// TODO Auto-generated method stub

		if(base64.equalsIgnoreCase("new")){
			layout.setVisibility(View.GONE);
			frameLayout.setVisibility(View.VISIBLE);
			StockTransferDetailsFragment newFragment1 = new StockTransferDetailsFragment();
			FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
			transaction1.replace(R.id.stockedit, newFragment1);
			transaction1.commit();
			new Handler().postDelayed(new Runnable() {
				@Override
				public void run() {
					StockTransferDetailsFragment  contactFragment = (StockTransferDetailsFragment) getSupportFragmentManager().findFragmentById(R.id.stockedit);       
					contactFragment.insertNewStockTransfer();
				}
			}, 1000);


		}
		if(base64.equalsIgnoreCase("Inserted")){
			layout.setVisibility(View.VISIBLE);
			frameLayout.setVisibility(View.GONE);
			StockTransferFragment newFragment1 = new StockTransferFragment();
			FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
			transaction1.replace(R.id.fragment1, newFragment1);
			transaction1.commit();
			new Handler().postDelayed(new Runnable() {
				@Override
				public void run() {
					StockTransferFragment  contactFragment = (StockTransferFragment) getSupportFragmentManager().findFragmentById(R.id.fragment1);       
					contactFragment.retriveLeads();
				}
			}, 1000);
			
			StockTransferDetailsFragment newFragment = new StockTransferDetailsFragment();
			FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
			transaction.replace(R.id.stock, newFragment);
			transaction.commit();

		}

	}

	@Override
	public void displayFields(int position, String category) {
		// TODO Auto-generated method stub

	}

}